package com.eltsistemas.controller.funcionario;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import com.eltsistemas.dao.GenericDao;
import com.eltsistemas.hibernate.HibernateUtil;
import com.eltsistemas.modelo.Beneficio;
import com.eltsistemas.modelo.Funcionario;

public class FuncionarioComBeneficio {
	
	public Long getBeneficioById(String nome) throws HibernateException
	{
		//Iniciando conexao a abrindo uma transacao
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		GenericDao<Beneficio> daoBeneficio = new GenericDao<>(session, Beneficio.class);
		
		//Carrega o objeto
		Beneficio b = new Beneficio();
		b = daoBeneficio.findByName(nome);
		
		//Finalizando a conexao
		session.close();

		return b.getId();
	}
	
	public String getBeneficioByName(Long id) throws HibernateException
	{
		//Iniciando conexao a abrindo uma transacao
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		GenericDao<Beneficio> daoBeneficio = new GenericDao<>(session, Beneficio.class);
		
		//Carrega o objeto
		Beneficio b = new Beneficio();
		b = daoBeneficio.findById(id);
		
		//Finalizando a conexao
		session.close();
		
		return b.getNome();
	}
	
	public Beneficio getBeneficioOf_Funcionario(Funcionario f, Beneficio b) throws HibernateException
	{
		
		//Iniciando conexao a abrindo uma transacao
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		Query query = session.createQuery("from Funcionario where id=:id_funcionario");
		query.setLong("id_funcionario", f.getId());
		
		Funcionario f1 =  (Funcionario) query.uniqueResult();
		for(Beneficio b1 : f1.getBeneficioList())
		{
			if(b1.getId() == b.getId())
			{
				//Finalizando a conexao
				session.close();
				
				return b;
			}
		}
		
		//Finalizando a conexao
		session.close();

		return null;
	}

}
